Gitlab WebHook本地获取json数据(含有BuildEvents字段)

当Gitlab中有动作触发时,就会触动 WebHook(钩子),Webhook也会随之返回一个Json数据, 可以根据这个json数据来实时监控项目工程,在Gitlab的Help中给出了很多字段,但唯独没有显性给出BuildEvents字段:

{

    “brfore_sha”:””,

    “build_allow_failure”:””,

    “build_duration”:””,

    “build_finished_at”:””,

    “build_id”:””,

    “build_name”:””,

    “build_stage”:””,

    “build_started_at”:””,

    “build_status”:””,

    “commit”:

    {

        “author_email”:””,

        “author_name”:””,

        “duration”:””,

        “finished_at”:””,

        “id”:””,

        “message”:””,

        “sha”:””,

        “started_at”:””,

        “status”:””

    },

    “object_kind”:””,

    “project_id”:””,

    “project_name”:””,

    “ref”:”master”,

    “repository”:

    {

        “description”:””,

        “git_http_url”:””,

        “git_ssh_url”:””,

        “homepage”:””,

        “name”:””,

        “url”:””,

        “visibility_level”:””

    },

    “sha”:””,

    “tag”:””,

    “user”:

        {

            “email”:””,

            “id”:””,

            “name”:””

        }

}

但只有样例字段还是远远不够的,因为某些字段的含义我们很难理解(build中before_sha表示version,),此时就需要输出自己的代码build返回的json数据。在help中也有相应的方法代码,在此翻译一下,供以后使用,毕竟“好记性不如烂笔头”

S1 . 配置Ruby环境(安装Ruby软件时,点击第二个复选框(自动配置PATH))

S2. 建文本文件,粘贴代码,保存为print_http_body.rb

require 'webrick'

server = WEBrick::HTTPServer.new(:Port => ARGV.first)
server.mount_proc '/' do |req, res|
  puts req.body
end

trap 'INT' do
  server.shutdown
end
server.start

S3. 在文件所在目录下打开Cmd, 编辑 ruby print_http_body.rb 8000(8000是未被占用的端口)

S4. 在webhook receiver中添加Event,http://my.host:8000/ (my.host表示IP)

 

 

完成以上4步后,触发相关的时间,就会在Cmd页面中输出对应的Json数据。

例如,如果创建的是IssueEvent,则,创建新的Issue或对已有的Issue操作时,就会在Cmd页面输出Json数据

注:点击Test按钮,返回的均是Push的json数据,所以在测试API时出现错误很正常(保证代码正确的前提下,修改数据实体类的字段即可)

文章目录
|